﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraBars;
using DevExpress.XtraEditors;
using UI_PMQLThuPhi_LMD.Utility_Classes;


namespace UI_PMQLThuPhi_LMD
{
    public partial class FrmMain : DevExpress.XtraBars.Ribbon.RibbonForm
    {
        // Form Đổi mật khẩu
        FrmDoiMatKhau frmDoiMatKhauObj;

        // Form Quản lý Người dùng
        FrmPhanQuyen frmPhanQuyenObj;

        // Form Quản lý Quận Huyện
        frmQuanHuyen frmQHObj;

        // Form Quản lý Phường Xã
        frmPhuongXa frmXPObj;

        // Form Quản lý Khu vực
        frmKhuVuc frmKVObj;

        // Form Quản lý Tuyến đường
        frmTuyenDuong frmTDObj;

        // Form Quản lý Nhân viên
        frmNhanVien frmNVObj;

        // Form Quản lý Loại Khách hàng
        frmLoaiKH frmLKHObj;

        // Form Quản lý Khách hàng
        FormQuanLyKhachHang frmKHObj;

        //Form Quản lý Mẫu hóa đơn 
        frmMauHoaDon frmMHDObj;

        // Form Phân bổ Khách hàng
        frmPhanBoKhachHang frmPBKHObj;

        // Form Nhập vé
        frmNhapVe frmNhapVeObj;

        // Form Cập nhật biến động thu phí
        FrmCapNhatBienDong frmCapNhatBienDongThuPhiObj;

        // Form Báo cáo danh sách khách hàng
        FrmBaoCaoKhachHang frmBaoCaoKhachHangObj;

        // Form Báo cáo doanh bộ theo nhân viên
        FrmBaoCaoDoanhBoTheoNhanVien frmBaoCaoDoanhBoTheoNhanVienObj;

        frmCapPhatVe frmCPVObj;
        frmSuDung frmSDObj;

        public FrmMain()
        {
            InitializeComponent();

        }

        // Load form
        private void frmMain_Load(object sender, EventArgs e)
        {
            xtraUserControl11.dangNhapThanhCong += new DangNhapEventHandler(HandleLogin);

            DevExpress.Skins.SkinManager.EnableFormSkins();
            DevExpress.UserSkins.BonusSkins.Register();
            DevExpress.UserSkins.OfficeSkins.Register();
        }

        // Đổi mật khẩu
        private void btDoiMatKhau_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmDoiMatKhauObj != null)
            {
                if (frmDoiMatKhauObj.IsDisposed)
                {
                    frmDoiMatKhauObj = new FrmDoiMatKhau();
                }
                else
                {
                    frmDoiMatKhauObj.Activate();
                }
            }
            else
            {
                frmDoiMatKhauObj = new FrmDoiMatKhau();
            }
            frmDoiMatKhauObj.Show();
        }

        // Quản lý Người dùng
        private void btNguoiDung_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmPhanQuyenObj != null)
            {
                if (frmPhanQuyenObj.IsDisposed)
                {
                    frmPhanQuyenObj = new FrmPhanQuyen();
                }
                else
                {
                    frmPhanQuyenObj.Activate();
                }
            }
            else
            {
                frmPhanQuyenObj = new FrmPhanQuyen();
            }

            frmPhanQuyenObj.MdiParent = this;
            frmPhanQuyenObj.Show();
        }

        // Đăng xuất
        private void btDangXuat_ItemClick(object sender, ItemClickEventArgs e)
        {
            // Form Đổi mật khẩu
            if (frmDoiMatKhauObj != null)
            {
                frmDoiMatKhauObj.Close();
            }

            // Form Quản lý Người dùng
            if (frmPhanQuyenObj != null)
            {
                frmPhanQuyenObj.Close();
            }

            // Form Quản lý Quận Huyện
            if (frmQHObj != null)
            {
                frmQHObj.Close();
            }

            // Form Quản lý Phường Xã
            if (frmXPObj != null)
            {
                frmXPObj.Close();
            }

            // Form Quản lý Khu vực
            if (frmKVObj != null)
            {
                frmKVObj.Close();
            }

            // Form Quản lý Tuyến đường
            if (frmTDObj != null)
            {
                frmTDObj.Close();
            }

            // Form Quản lý Nhân viên
            if (frmNVObj != null)
            {
                frmNVObj.Close();
            }

            // Form Quản lý Loại Khách hàng
            if (frmLKHObj != null)
            {
                frmLKHObj.Close();
            }

            // Form Quản lý Khách hàng
            if (frmKHObj != null)
            {
                frmKHObj.Close();
            }

            // Form Quản lý Mẫu hóa đơn 
            if (frmMHDObj != null)
            {
                frmMHDObj.Close();
            }

            // Form Phân bổ Khách hàng
            if (frmPBKHObj != null)
            {
                frmPBKHObj.Close();
            }
            
            // Form Nhập vé
            if (frmNhapVeObj != null)
            {
                frmNhapVeObj.Close();
            }
            
            // Form Cập nhật biến động thu phí
            if (frmCapNhatBienDongThuPhiObj != null)
            {
                frmCapNhatBienDongThuPhiObj.Close();
            }

            xtraUserControl11.Visible = true;

            PhanQuyenSuperAdmin(false);
        }

        // Quản lý Quận Huyện
        private void btQuanHuyen_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmQHObj != null)
            {
                if (frmQHObj.IsDisposed)
                {
                    frmQHObj = new frmQuanHuyen();
                }
                else
                {
                    frmQHObj.Activate();
                }
            }
            else
            {
                frmQHObj = new frmQuanHuyen();
            }

            frmQHObj.MdiParent = this;
            frmQHObj.Show();
        }

        // Quản lý Xã Phường
        private void btXaPhuong_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmXPObj != null)
            {
                if (frmXPObj.IsDisposed)
                {
                    frmXPObj = new frmPhuongXa();
                }
                else
                {
                    frmXPObj.Activate();
                }
            }
            else
            {
                frmXPObj = new frmPhuongXa();
            }

            frmXPObj.MdiParent = this;
            frmXPObj.Show();
        }

        // Quản lý Khu vực
        private void btKhuVuc_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmKVObj != null)
            {
                if (frmKVObj.IsDisposed)
                {
                    frmKVObj = new frmKhuVuc();
                }
                else
                {
                    frmKVObj.Activate();
                }
            }
            else
            {
                frmKVObj = new frmKhuVuc();
            }

            frmKVObj.MdiParent = this;
            frmKVObj.Show();
        }

        // Quản lý Tuyến đường
        private void btTuyenDuong_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmTDObj != null)
            {
                if (frmTDObj.IsDisposed)
                {
                    frmTDObj = new frmTuyenDuong();
                }
                else
                {
                    frmTDObj.Activate();
                }
            }
            else
            {
                frmTDObj = new frmTuyenDuong();
            }

            frmTDObj.MdiParent = this;
            frmTDObj.Show();
        }

        // Quản lý Nhân viên
        private void btNhanVien_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmNVObj != null)
            {
                if (frmNVObj.IsDisposed)
                {
                    frmNVObj = new frmNhanVien();
                }
                else
                {
                    frmNVObj.Activate();
                }
            }
            else
            {
                frmNVObj = new frmNhanVien();
            }

            frmNVObj.MdiParent = this;
            frmNVObj.Show();

        }

        // Quản lý Loại Khách hàng
        private void btLoaiKH_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmLKHObj != null)
            {
                if (frmLKHObj.IsDisposed)
                {
                    frmLKHObj = new frmLoaiKH();
                }
                else
                {
                    frmLKHObj.Activate();
                }
            }
            else
            {
                frmLKHObj = new frmLoaiKH();
            }

            frmLKHObj.MdiParent = this;
            frmLKHObj.Show();

        }

        // Quản lý Khách hàng
        private void btKH_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmKHObj != null)
            {
                if (frmKHObj.IsDisposed)
                {
                    frmKHObj = new FormQuanLyKhachHang();
                }
                else
                {
                    frmKHObj.Activate();
                }
            }
            else
            {
                frmKHObj = new FormQuanLyKhachHang();
            }

            frmKHObj.MdiParent = this;
            frmKHObj.Show();
        }

        // Quản lý mẫu hóa đơn
        private void btMauHD_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmMHDObj != null)
            {
                if (frmMHDObj.IsDisposed)
                {
                    frmMHDObj = new frmMauHoaDon();
                }
                else
                {
                    frmMHDObj.Activate();
                }
            }
            else
            {
                frmMHDObj = new frmMauHoaDon();
            }

            frmMHDObj.MdiParent = this;
            frmMHDObj.Show();
        }

        // Phân bổ Khách hàng
        private void btPhanBoKH_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (frmPBKHObj != null)
            {
                if (frmPBKHObj.IsDisposed)
                {
                    frmPBKHObj = new frmPhanBoKhachHang();
                }
                else
                {
                    frmPBKHObj.Activate();
                }
            }
            else
            {
                frmPBKHObj = new frmPhanBoKhachHang();
            }

            frmPBKHObj.MdiParent = this;
            frmPBKHObj.Show();
        }

        // Nhập vé
        private void btNhapVe_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmNhapVeObj != null)
            {
                if (frmNhapVeObj.IsDisposed)
                {
                    frmNhapVeObj = new frmNhapVe();
                }
                else
                {
                    frmNhapVeObj.Activate();
                }
            }
            else
            {
                frmNhapVeObj = new frmNhapVe();
            }

            frmNhapVeObj.MdiParent = this;
            frmNhapVeObj.Show();
        }

        private void btCapPhat_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmCPVObj != null)
            {
                if (frmCPVObj.IsDisposed)
                {
                    frmCPVObj = new frmCapPhatVe();
                }
                else
                {
                    frmCPVObj.Activate();
                }
            }
            else
            {
                frmCPVObj = new frmCapPhatVe();
            }

            frmCPVObj.MdiParent = this;
            frmCPVObj.Show();
        }

        // Quản lý cập nhật biến động thu phí
        private void btCapNhatBienDong_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmCapNhatBienDongThuPhiObj != null)
            {
                if (frmCapNhatBienDongThuPhiObj.IsDisposed)
                {
                    frmCapNhatBienDongThuPhiObj = new FrmCapNhatBienDong();
                }
                else
                {
                    frmCapNhatBienDongThuPhiObj.Activate();
                }
            }
            else
            {
                frmCapNhatBienDongThuPhiObj = new FrmCapNhatBienDong();
            }

            frmCapNhatBienDongThuPhiObj.MdiParent = this;
            frmCapNhatBienDongThuPhiObj.Show();
        }

        // Báo cáo danh sách khách hàng
        private void btBaoCaoDanhSachKhachHang_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmBaoCaoKhachHangObj != null)
            {
                if (frmBaoCaoKhachHangObj.IsDisposed)
                {
                    frmBaoCaoKhachHangObj = new FrmBaoCaoKhachHang();
                }
                else
                {
                    frmBaoCaoKhachHangObj.Activate();
                }
            }
            else
            {
                frmBaoCaoKhachHangObj = new FrmBaoCaoKhachHang();
            }

            frmBaoCaoKhachHangObj.MdiParent = this;
            frmBaoCaoKhachHangObj.Show();
        }

        // Báo cáo doanh bộ theo nhân viên
        private void btBaoCaoDoanhBo_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmBaoCaoDoanhBoTheoNhanVienObj != null)
            {
                if (frmBaoCaoDoanhBoTheoNhanVienObj.IsDisposed)
                {
                    frmBaoCaoDoanhBoTheoNhanVienObj = new FrmBaoCaoDoanhBoTheoNhanVien();
                }
                else
                {
                    frmBaoCaoDoanhBoTheoNhanVienObj.Activate();
                }
            }
            else
            {
                frmBaoCaoDoanhBoTheoNhanVienObj = new FrmBaoCaoDoanhBoTheoNhanVien();
            }

            frmBaoCaoDoanhBoTheoNhanVienObj.MdiParent = this;
            frmBaoCaoDoanhBoTheoNhanVienObj.Show();
        }

        // Hàm xử lý sự kiện đăng nhập thành công ở user control đăng nhập
        private void HandleLogin(object sender, Boolean e)
        {
            if (SystemInfo.pub_QuyenSuDung == "Cán bộ nhập liệu")
            {
                PhanQuyenNhapLieu(true);
            }
            else if (SystemInfo.pub_QuyenSuDung == "Cán bộ khai báo danh mục")
            {
                PhanQuyenKhaiBao(true);
            }
            else if (SystemInfo.pub_QuyenSuDung == "Admin")
            {
                PhanQuyenAdmin(true);
            }
            else if (SystemInfo.pub_QuyenSuDung == "Super Admin")
            {
                PhanQuyenSuperAdmin(true);
            }
        }            

        // Phân quyền cho cán bộ nhập liệu
        private void PhanQuyenNhapLieu(Boolean duocCap)
        {
            btDoiMatKhau.Enabled = duocCap;
            btDangXuat.Enabled = duocCap;
            
            // Cập nhật biến động thu phí
            btCapNhatBienDong.Enabled = duocCap;
        }

        // Phân quyền cho cán bộ khai báo
        private void PhanQuyenKhaiBao(Boolean duocCap)
        {
            PhanQuyenNhapLieu(duocCap);
            
            // Danh mục Quận Huyện
            btQuanHuyen.Enabled = duocCap;

            // Danh mục Phường Xã
            btPhuongXa.Enabled = duocCap;

            // Danh mục Khu vực
            btKhuVuc.Enabled = duocCap;

            // Danh mục Tuyến đường
            btTuyenDuong.Enabled = duocCap;

            // Danh mục Loại Khách hàng
            btLoaiKH.Enabled = duocCap;

            // Danh mục Khách hàng
            btKH.Enabled = duocCap;

               // Danh mục mẫu hóa đơn
            btMauHD.Enabled = duocCap;
        }

        // Phân quyền cho admin 
        private void PhanQuyenAdmin(Boolean duocCap)
        {
            PhanQuyenKhaiBao(duocCap);

            // Quản lý người dùng
            btNguoiDung.Enabled = duocCap;

            // Quản lý nhân viên
            btNhanVien.Enabled = duocCap;

            // Sao lưu dữ liệu
            btSaoLuu.Enabled = duocCap;

            // Phục hồi dữ liệu
            btPhucHoi.Enabled = duocCap;

            // Phân bổ khách hàng cho nhân viên thu phí
            btPhanBoKH.Enabled = true;

            // Nhập vé
            btNhapVe.Enabled = duocCap;

            // Cấp phát vé
            btCapPhat.Enabled = duocCap;

            // Sử dụng vé
            btSuDungVe.Enabled = duocCap;

            btQuanLyTon.Enabled = duocCap;
            btNhapDauKy.Enabled = duocCap;
        }

        // Phân quyền cho super admin 
        private void PhanQuyenSuperAdmin(Boolean duocCap)
        {
            PhanQuyenAdmin(duocCap);

            // Báo cáo danh sách khách hàng theo nhân viên
            btBaoCaoDanhSachKhachHang.Enabled = duocCap;

            // Báo cáo doanh bộ theo nhân viên
            btBaoCaoDoanhBo.Enabled = duocCap;
        }

        private void btSuDungVe_ItemClick(object sender, ItemClickEventArgs e)
        {
            xtraUserControl11.Visible = false;

            if (frmSDObj != null)
            {
                if (frmSDObj.IsDisposed)
                {
                    frmSDObj = new frmSuDung();
                }
                else
                {
                    frmSDObj.Activate();
                }
            }
            else
            {
                frmSDObj = new frmSuDung();
            }

            frmSDObj.MdiParent = this;
            frmSDObj.Show();
        }

  
    }
}
